/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3.impl;

import java.util.Collection;

import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.Enumerator;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

import org.eclipse.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.InternalEList;

import org.hl7.v3.ActClassClinicalDocument;
import org.hl7.v3.CE;
import org.hl7.v3.CS1;
import org.hl7.v3.II;
import org.hl7.v3.INT1;
import org.hl7.v3.POCDMT000040Authenticator;
import org.hl7.v3.POCDMT000040Author;
import org.hl7.v3.POCDMT000040Authorization;
import org.hl7.v3.POCDMT000040ClinicalDocument;
import org.hl7.v3.POCDMT000040Component1;
import org.hl7.v3.POCDMT000040Component2;
import org.hl7.v3.POCDMT000040Custodian;
import org.hl7.v3.POCDMT000040DataEnterer;
import org.hl7.v3.POCDMT000040DocumentationOf;
import org.hl7.v3.POCDMT000040InFulfillmentOf;
import org.hl7.v3.POCDMT000040Informant12;
import org.hl7.v3.POCDMT000040InformationRecipient;
import org.hl7.v3.POCDMT000040InfrastructureRootTypeId;
import org.hl7.v3.POCDMT000040LegalAuthenticator;
import org.hl7.v3.POCDMT000040Participant1;
import org.hl7.v3.POCDMT000040RecordTarget;
import org.hl7.v3.POCDMT000040RelatedDocument;
import org.hl7.v3.ST1;
import org.hl7.v3.TS1;
import org.hl7.v3.V3Factory;
import org.hl7.v3.V3Package;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>POCDMT000040 Clinical Document</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getRealmCode <em>Realm Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getTypeId <em>Type Id</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getTemplateId <em>Template Id</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getId <em>Id</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getCode <em>Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getTitle <em>Title</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getEffectiveTime <em>Effective Time</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getConfidentialityCode <em>Confidentiality Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getLanguageCode <em>Language Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getSetId <em>Set Id</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getVersionNumber <em>Version Number</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getCopyTime <em>Copy Time</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getRecordTarget <em>Record Target</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getAuthor <em>Author</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getDataEnterer <em>Data Enterer</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getInformant <em>Informant</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getCustodian <em>Custodian</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getInformationRecipient <em>Information Recipient</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getLegalAuthenticator <em>Legal Authenticator</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getAuthenticator <em>Authenticator</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getParticipant <em>Participant</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getInFulfillmentOf <em>In Fulfillment Of</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getDocumentationOf <em>Documentation Of</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getRelatedDocument <em>Related Document</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getAuthorization <em>Authorization</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getComponentOf <em>Component Of</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getComponent <em>Component</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getClassCode <em>Class Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getMoodCode <em>Mood Code</em>}</li>
 *   <li>{@link org.hl7.v3.impl.POCDMT000040ClinicalDocumentImpl#getNullFlavor <em>Null Flavor</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class POCDMT000040ClinicalDocumentImpl extends EObjectImpl implements POCDMT000040ClinicalDocument {
	/**
	 * The cached value of the '{@link #getRealmCode() <em>Realm Code</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRealmCode()
	 * @generated
	 * @ordered
	 */
	protected EList<CS1> realmCode;

	/**
	 * The cached value of the '{@link #getTypeId() <em>Type Id</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeId()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040InfrastructureRootTypeId typeId;

	/**
	 * The cached value of the '{@link #getTemplateId() <em>Template Id</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTemplateId()
	 * @generated
	 * @ordered
	 */
	protected EList<II> templateId;

	/**
	 * The cached value of the '{@link #getId() <em>Id</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getId()
	 * @generated
	 * @ordered
	 */
	protected II id;

	/**
	 * The cached value of the '{@link #getCode() <em>Code</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCode()
	 * @generated
	 * @ordered
	 */
	protected CE code;

	/**
	 * The cached value of the '{@link #getTitle() <em>Title</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTitle()
	 * @generated
	 * @ordered
	 */
	protected ST1 title;

	/**
	 * The cached value of the '{@link #getEffectiveTime() <em>Effective Time</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEffectiveTime()
	 * @generated
	 * @ordered
	 */
	protected TS1 effectiveTime;

	/**
	 * The cached value of the '{@link #getConfidentialityCode() <em>Confidentiality Code</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getConfidentialityCode()
	 * @generated
	 * @ordered
	 */
	protected CE confidentialityCode;

	/**
	 * The cached value of the '{@link #getLanguageCode() <em>Language Code</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLanguageCode()
	 * @generated
	 * @ordered
	 */
	protected CS1 languageCode;

	/**
	 * The cached value of the '{@link #getSetId() <em>Set Id</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSetId()
	 * @generated
	 * @ordered
	 */
	protected II setId;

	/**
	 * The cached value of the '{@link #getVersionNumber() <em>Version Number</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVersionNumber()
	 * @generated
	 * @ordered
	 */
	protected INT1 versionNumber;

	/**
	 * The cached value of the '{@link #getCopyTime() <em>Copy Time</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCopyTime()
	 * @generated
	 * @ordered
	 */
	protected TS1 copyTime;

	/**
	 * The cached value of the '{@link #getRecordTarget() <em>Record Target</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRecordTarget()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040RecordTarget> recordTarget;

	/**
	 * The cached value of the '{@link #getAuthor() <em>Author</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAuthor()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040Author> author;

	/**
	 * The cached value of the '{@link #getDataEnterer() <em>Data Enterer</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDataEnterer()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040DataEnterer dataEnterer;

	/**
	 * The cached value of the '{@link #getInformant() <em>Informant</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInformant()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040Informant12> informant;

	/**
	 * The cached value of the '{@link #getCustodian() <em>Custodian</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCustodian()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040Custodian custodian;

	/**
	 * The cached value of the '{@link #getInformationRecipient() <em>Information Recipient</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInformationRecipient()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040InformationRecipient> informationRecipient;

	/**
	 * The cached value of the '{@link #getLegalAuthenticator() <em>Legal Authenticator</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLegalAuthenticator()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040LegalAuthenticator legalAuthenticator;

	/**
	 * The cached value of the '{@link #getAuthenticator() <em>Authenticator</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAuthenticator()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040Authenticator> authenticator;

	/**
	 * The cached value of the '{@link #getParticipant() <em>Participant</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getParticipant()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040Participant1> participant;

	/**
	 * The cached value of the '{@link #getInFulfillmentOf() <em>In Fulfillment Of</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInFulfillmentOf()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040InFulfillmentOf> inFulfillmentOf;

	/**
	 * The cached value of the '{@link #getDocumentationOf() <em>Documentation Of</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDocumentationOf()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040DocumentationOf> documentationOf;

	/**
	 * The cached value of the '{@link #getRelatedDocument() <em>Related Document</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRelatedDocument()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040RelatedDocument> relatedDocument;

	/**
	 * The cached value of the '{@link #getAuthorization() <em>Authorization</em>}' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAuthorization()
	 * @generated
	 * @ordered
	 */
	protected EList<POCDMT000040Authorization> authorization;

	/**
	 * The cached value of the '{@link #getComponentOf() <em>Component Of</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getComponentOf()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040Component1 componentOf;

	/**
	 * The cached value of the '{@link #getComponent() <em>Component</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getComponent()
	 * @generated
	 * @ordered
	 */
	protected POCDMT000040Component2 component;

	/**
	 * The default value of the '{@link #getClassCode() <em>Class Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getClassCode()
	 * @generated
	 * @ordered
	 */
	protected static final ActClassClinicalDocument CLASS_CODE_EDEFAULT = ActClassClinicalDocument.DOCCLIN;

	/**
	 * The cached value of the '{@link #getClassCode() <em>Class Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getClassCode()
	 * @generated
	 * @ordered
	 */
	protected ActClassClinicalDocument classCode = CLASS_CODE_EDEFAULT;

	/**
	 * This is true if the Class Code attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean classCodeESet;

	/**
	 * The default value of the '{@link #getMoodCode() <em>Mood Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMoodCode()
	 * @generated
	 * @ordered
	 */
	protected static final Enumerator MOOD_CODE_EDEFAULT = (Enumerator)V3Factory.eINSTANCE.createFromString(V3Package.eINSTANCE.getActMood(), "EVN");

	/**
	 * The cached value of the '{@link #getMoodCode() <em>Mood Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMoodCode()
	 * @generated
	 * @ordered
	 */
	protected Enumerator moodCode = MOOD_CODE_EDEFAULT;

	/**
	 * This is true if the Mood Code attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean moodCodeESet;

	/**
	 * The default value of the '{@link #getNullFlavor() <em>Null Flavor</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNullFlavor()
	 * @generated
	 * @ordered
	 */
	protected static final Enumerator NULL_FLAVOR_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getNullFlavor() <em>Null Flavor</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNullFlavor()
	 * @generated
	 * @ordered
	 */
	protected Enumerator nullFlavor = NULL_FLAVOR_EDEFAULT;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected POCDMT000040ClinicalDocumentImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return V3Package.eINSTANCE.getPOCDMT000040ClinicalDocument();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<CS1> getRealmCode() {
		if (realmCode == null) {
			realmCode = new EObjectContainmentEList<CS1>(CS1.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE);
		}
		return realmCode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040InfrastructureRootTypeId getTypeId() {
		return typeId;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTypeId(POCDMT000040InfrastructureRootTypeId newTypeId, NotificationChain msgs) {
		POCDMT000040InfrastructureRootTypeId oldTypeId = typeId;
		typeId = newTypeId;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID, oldTypeId, newTypeId);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeId(POCDMT000040InfrastructureRootTypeId newTypeId) {
		if (newTypeId != typeId) {
			NotificationChain msgs = null;
			if (typeId != null)
				msgs = ((InternalEObject)typeId).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID, null, msgs);
			if (newTypeId != null)
				msgs = ((InternalEObject)newTypeId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID, null, msgs);
			msgs = basicSetTypeId(newTypeId, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID, newTypeId, newTypeId));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<II> getTemplateId() {
		if (templateId == null) {
			templateId = new EObjectContainmentEList<II>(II.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID);
		}
		return templateId;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public II getId() {
		return id;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetId(II newId, NotificationChain msgs) {
		II oldId = id;
		id = newId;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID, oldId, newId);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setId(II newId) {
		if (newId != id) {
			NotificationChain msgs = null;
			if (id != null)
				msgs = ((InternalEObject)id).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID, null, msgs);
			if (newId != null)
				msgs = ((InternalEObject)newId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID, null, msgs);
			msgs = basicSetId(newId, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID, newId, newId));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CE getCode() {
		return code;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCode(CE newCode, NotificationChain msgs) {
		CE oldCode = code;
		code = newCode;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE, oldCode, newCode);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCode(CE newCode) {
		if (newCode != code) {
			NotificationChain msgs = null;
			if (code != null)
				msgs = ((InternalEObject)code).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE, null, msgs);
			if (newCode != null)
				msgs = ((InternalEObject)newCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE, null, msgs);
			msgs = basicSetCode(newCode, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE, newCode, newCode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ST1 getTitle() {
		return title;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTitle(ST1 newTitle, NotificationChain msgs) {
		ST1 oldTitle = title;
		title = newTitle;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE, oldTitle, newTitle);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTitle(ST1 newTitle) {
		if (newTitle != title) {
			NotificationChain msgs = null;
			if (title != null)
				msgs = ((InternalEObject)title).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE, null, msgs);
			if (newTitle != null)
				msgs = ((InternalEObject)newTitle).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE, null, msgs);
			msgs = basicSetTitle(newTitle, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE, newTitle, newTitle));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TS1 getEffectiveTime() {
		return effectiveTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetEffectiveTime(TS1 newEffectiveTime, NotificationChain msgs) {
		TS1 oldEffectiveTime = effectiveTime;
		effectiveTime = newEffectiveTime;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME, oldEffectiveTime, newEffectiveTime);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEffectiveTime(TS1 newEffectiveTime) {
		if (newEffectiveTime != effectiveTime) {
			NotificationChain msgs = null;
			if (effectiveTime != null)
				msgs = ((InternalEObject)effectiveTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME, null, msgs);
			if (newEffectiveTime != null)
				msgs = ((InternalEObject)newEffectiveTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME, null, msgs);
			msgs = basicSetEffectiveTime(newEffectiveTime, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME, newEffectiveTime, newEffectiveTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CE getConfidentialityCode() {
		return confidentialityCode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetConfidentialityCode(CE newConfidentialityCode, NotificationChain msgs) {
		CE oldConfidentialityCode = confidentialityCode;
		confidentialityCode = newConfidentialityCode;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE, oldConfidentialityCode, newConfidentialityCode);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setConfidentialityCode(CE newConfidentialityCode) {
		if (newConfidentialityCode != confidentialityCode) {
			NotificationChain msgs = null;
			if (confidentialityCode != null)
				msgs = ((InternalEObject)confidentialityCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE, null, msgs);
			if (newConfidentialityCode != null)
				msgs = ((InternalEObject)newConfidentialityCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE, null, msgs);
			msgs = basicSetConfidentialityCode(newConfidentialityCode, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE, newConfidentialityCode, newConfidentialityCode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CS1 getLanguageCode() {
		return languageCode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetLanguageCode(CS1 newLanguageCode, NotificationChain msgs) {
		CS1 oldLanguageCode = languageCode;
		languageCode = newLanguageCode;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE, oldLanguageCode, newLanguageCode);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLanguageCode(CS1 newLanguageCode) {
		if (newLanguageCode != languageCode) {
			NotificationChain msgs = null;
			if (languageCode != null)
				msgs = ((InternalEObject)languageCode).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE, null, msgs);
			if (newLanguageCode != null)
				msgs = ((InternalEObject)newLanguageCode).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE, null, msgs);
			msgs = basicSetLanguageCode(newLanguageCode, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE, newLanguageCode, newLanguageCode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public II getSetId() {
		return setId;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetSetId(II newSetId, NotificationChain msgs) {
		II oldSetId = setId;
		setId = newSetId;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID, oldSetId, newSetId);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSetId(II newSetId) {
		if (newSetId != setId) {
			NotificationChain msgs = null;
			if (setId != null)
				msgs = ((InternalEObject)setId).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID, null, msgs);
			if (newSetId != null)
				msgs = ((InternalEObject)newSetId).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID, null, msgs);
			msgs = basicSetSetId(newSetId, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID, newSetId, newSetId));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public INT1 getVersionNumber() {
		return versionNumber;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetVersionNumber(INT1 newVersionNumber, NotificationChain msgs) {
		INT1 oldVersionNumber = versionNumber;
		versionNumber = newVersionNumber;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER, oldVersionNumber, newVersionNumber);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVersionNumber(INT1 newVersionNumber) {
		if (newVersionNumber != versionNumber) {
			NotificationChain msgs = null;
			if (versionNumber != null)
				msgs = ((InternalEObject)versionNumber).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER, null, msgs);
			if (newVersionNumber != null)
				msgs = ((InternalEObject)newVersionNumber).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER, null, msgs);
			msgs = basicSetVersionNumber(newVersionNumber, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER, newVersionNumber, newVersionNumber));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TS1 getCopyTime() {
		return copyTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCopyTime(TS1 newCopyTime, NotificationChain msgs) {
		TS1 oldCopyTime = copyTime;
		copyTime = newCopyTime;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME, oldCopyTime, newCopyTime);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCopyTime(TS1 newCopyTime) {
		if (newCopyTime != copyTime) {
			NotificationChain msgs = null;
			if (copyTime != null)
				msgs = ((InternalEObject)copyTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME, null, msgs);
			if (newCopyTime != null)
				msgs = ((InternalEObject)newCopyTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME, null, msgs);
			msgs = basicSetCopyTime(newCopyTime, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME, newCopyTime, newCopyTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040RecordTarget> getRecordTarget() {
		if (recordTarget == null) {
			recordTarget = new EObjectContainmentEList<POCDMT000040RecordTarget>(POCDMT000040RecordTarget.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET);
		}
		return recordTarget;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040Author> getAuthor() {
		if (author == null) {
			author = new EObjectContainmentEList<POCDMT000040Author>(POCDMT000040Author.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR);
		}
		return author;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040DataEnterer getDataEnterer() {
		return dataEnterer;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetDataEnterer(POCDMT000040DataEnterer newDataEnterer, NotificationChain msgs) {
		POCDMT000040DataEnterer oldDataEnterer = dataEnterer;
		dataEnterer = newDataEnterer;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER, oldDataEnterer, newDataEnterer);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDataEnterer(POCDMT000040DataEnterer newDataEnterer) {
		if (newDataEnterer != dataEnterer) {
			NotificationChain msgs = null;
			if (dataEnterer != null)
				msgs = ((InternalEObject)dataEnterer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER, null, msgs);
			if (newDataEnterer != null)
				msgs = ((InternalEObject)newDataEnterer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER, null, msgs);
			msgs = basicSetDataEnterer(newDataEnterer, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER, newDataEnterer, newDataEnterer));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040Informant12> getInformant() {
		if (informant == null) {
			informant = new EObjectContainmentEList<POCDMT000040Informant12>(POCDMT000040Informant12.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT);
		}
		return informant;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040Custodian getCustodian() {
		return custodian;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCustodian(POCDMT000040Custodian newCustodian, NotificationChain msgs) {
		POCDMT000040Custodian oldCustodian = custodian;
		custodian = newCustodian;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN, oldCustodian, newCustodian);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCustodian(POCDMT000040Custodian newCustodian) {
		if (newCustodian != custodian) {
			NotificationChain msgs = null;
			if (custodian != null)
				msgs = ((InternalEObject)custodian).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN, null, msgs);
			if (newCustodian != null)
				msgs = ((InternalEObject)newCustodian).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN, null, msgs);
			msgs = basicSetCustodian(newCustodian, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN, newCustodian, newCustodian));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040InformationRecipient> getInformationRecipient() {
		if (informationRecipient == null) {
			informationRecipient = new EObjectContainmentEList<POCDMT000040InformationRecipient>(POCDMT000040InformationRecipient.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT);
		}
		return informationRecipient;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040LegalAuthenticator getLegalAuthenticator() {
		return legalAuthenticator;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetLegalAuthenticator(POCDMT000040LegalAuthenticator newLegalAuthenticator, NotificationChain msgs) {
		POCDMT000040LegalAuthenticator oldLegalAuthenticator = legalAuthenticator;
		legalAuthenticator = newLegalAuthenticator;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR, oldLegalAuthenticator, newLegalAuthenticator);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLegalAuthenticator(POCDMT000040LegalAuthenticator newLegalAuthenticator) {
		if (newLegalAuthenticator != legalAuthenticator) {
			NotificationChain msgs = null;
			if (legalAuthenticator != null)
				msgs = ((InternalEObject)legalAuthenticator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR, null, msgs);
			if (newLegalAuthenticator != null)
				msgs = ((InternalEObject)newLegalAuthenticator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR, null, msgs);
			msgs = basicSetLegalAuthenticator(newLegalAuthenticator, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR, newLegalAuthenticator, newLegalAuthenticator));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040Authenticator> getAuthenticator() {
		if (authenticator == null) {
			authenticator = new EObjectContainmentEList<POCDMT000040Authenticator>(POCDMT000040Authenticator.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR);
		}
		return authenticator;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040Participant1> getParticipant() {
		if (participant == null) {
			participant = new EObjectContainmentEList<POCDMT000040Participant1>(POCDMT000040Participant1.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT);
		}
		return participant;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040InFulfillmentOf> getInFulfillmentOf() {
		if (inFulfillmentOf == null) {
			inFulfillmentOf = new EObjectContainmentEList<POCDMT000040InFulfillmentOf>(POCDMT000040InFulfillmentOf.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF);
		}
		return inFulfillmentOf;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040DocumentationOf> getDocumentationOf() {
		if (documentationOf == null) {
			documentationOf = new EObjectContainmentEList<POCDMT000040DocumentationOf>(POCDMT000040DocumentationOf.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF);
		}
		return documentationOf;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040RelatedDocument> getRelatedDocument() {
		if (relatedDocument == null) {
			relatedDocument = new EObjectContainmentEList<POCDMT000040RelatedDocument>(POCDMT000040RelatedDocument.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT);
		}
		return relatedDocument;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<POCDMT000040Authorization> getAuthorization() {
		if (authorization == null) {
			authorization = new EObjectContainmentEList<POCDMT000040Authorization>(POCDMT000040Authorization.class, this, V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION);
		}
		return authorization;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040Component1 getComponentOf() {
		return componentOf;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetComponentOf(POCDMT000040Component1 newComponentOf, NotificationChain msgs) {
		POCDMT000040Component1 oldComponentOf = componentOf;
		componentOf = newComponentOf;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF, oldComponentOf, newComponentOf);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setComponentOf(POCDMT000040Component1 newComponentOf) {
		if (newComponentOf != componentOf) {
			NotificationChain msgs = null;
			if (componentOf != null)
				msgs = ((InternalEObject)componentOf).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF, null, msgs);
			if (newComponentOf != null)
				msgs = ((InternalEObject)newComponentOf).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF, null, msgs);
			msgs = basicSetComponentOf(newComponentOf, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF, newComponentOf, newComponentOf));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public POCDMT000040Component2 getComponent() {
		return component;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetComponent(POCDMT000040Component2 newComponent, NotificationChain msgs) {
		POCDMT000040Component2 oldComponent = component;
		component = newComponent;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT, oldComponent, newComponent);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setComponent(POCDMT000040Component2 newComponent) {
		if (newComponent != component) {
			NotificationChain msgs = null;
			if (component != null)
				msgs = ((InternalEObject)component).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT, null, msgs);
			if (newComponent != null)
				msgs = ((InternalEObject)newComponent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT, null, msgs);
			msgs = basicSetComponent(newComponent, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT, newComponent, newComponent));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActClassClinicalDocument getClassCode() {
		return classCode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setClassCode(ActClassClinicalDocument newClassCode) {
		ActClassClinicalDocument oldClassCode = classCode;
		classCode = newClassCode == null ? CLASS_CODE_EDEFAULT : newClassCode;
		boolean oldClassCodeESet = classCodeESet;
		classCodeESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE, oldClassCode, classCode, !oldClassCodeESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetClassCode() {
		ActClassClinicalDocument oldClassCode = classCode;
		boolean oldClassCodeESet = classCodeESet;
		classCode = CLASS_CODE_EDEFAULT;
		classCodeESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE, oldClassCode, CLASS_CODE_EDEFAULT, oldClassCodeESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetClassCode() {
		return classCodeESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Enumerator getMoodCode() {
		return moodCode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMoodCode(Enumerator newMoodCode) {
		Enumerator oldMoodCode = moodCode;
		moodCode = newMoodCode;
		boolean oldMoodCodeESet = moodCodeESet;
		moodCodeESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE, oldMoodCode, moodCode, !oldMoodCodeESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetMoodCode() {
		Enumerator oldMoodCode = moodCode;
		boolean oldMoodCodeESet = moodCodeESet;
		moodCode = MOOD_CODE_EDEFAULT;
		moodCodeESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE, oldMoodCode, MOOD_CODE_EDEFAULT, oldMoodCodeESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetMoodCode() {
		return moodCodeESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Enumerator getNullFlavor() {
		return nullFlavor;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNullFlavor(Enumerator newNullFlavor) {
		Enumerator oldNullFlavor = nullFlavor;
		nullFlavor = newNullFlavor;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, V3Package.POCDMT000040_CLINICAL_DOCUMENT__NULL_FLAVOR, oldNullFlavor, nullFlavor));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
		switch (featureID) {
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE:
				return ((InternalEList<?>)getRealmCode()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID:
				return basicSetTypeId(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID:
				return ((InternalEList<?>)getTemplateId()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID:
				return basicSetId(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE:
				return basicSetCode(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE:
				return basicSetTitle(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME:
				return basicSetEffectiveTime(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE:
				return basicSetConfidentialityCode(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE:
				return basicSetLanguageCode(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID:
				return basicSetSetId(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER:
				return basicSetVersionNumber(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME:
				return basicSetCopyTime(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET:
				return ((InternalEList<?>)getRecordTarget()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR:
				return ((InternalEList<?>)getAuthor()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER:
				return basicSetDataEnterer(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT:
				return ((InternalEList<?>)getInformant()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN:
				return basicSetCustodian(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT:
				return ((InternalEList<?>)getInformationRecipient()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR:
				return basicSetLegalAuthenticator(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR:
				return ((InternalEList<?>)getAuthenticator()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT:
				return ((InternalEList<?>)getParticipant()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF:
				return ((InternalEList<?>)getInFulfillmentOf()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF:
				return ((InternalEList<?>)getDocumentationOf()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT:
				return ((InternalEList<?>)getRelatedDocument()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION:
				return ((InternalEList<?>)getAuthorization()).basicRemove(otherEnd, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF:
				return basicSetComponentOf(null, msgs);
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT:
				return basicSetComponent(null, msgs);
		}
		return super.eInverseRemove(otherEnd, featureID, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE:
				return getRealmCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID:
				return getTypeId();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID:
				return getTemplateId();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID:
				return getId();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE:
				return getCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE:
				return getTitle();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME:
				return getEffectiveTime();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE:
				return getConfidentialityCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE:
				return getLanguageCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID:
				return getSetId();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER:
				return getVersionNumber();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME:
				return getCopyTime();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET:
				return getRecordTarget();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR:
				return getAuthor();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER:
				return getDataEnterer();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT:
				return getInformant();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN:
				return getCustodian();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT:
				return getInformationRecipient();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR:
				return getLegalAuthenticator();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR:
				return getAuthenticator();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT:
				return getParticipant();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF:
				return getInFulfillmentOf();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF:
				return getDocumentationOf();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT:
				return getRelatedDocument();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION:
				return getAuthorization();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF:
				return getComponentOf();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT:
				return getComponent();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE:
				return getClassCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE:
				return getMoodCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__NULL_FLAVOR:
				return getNullFlavor();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE:
				getRealmCode().clear();
				getRealmCode().addAll((Collection<? extends CS1>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID:
				setTypeId((POCDMT000040InfrastructureRootTypeId)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID:
				getTemplateId().clear();
				getTemplateId().addAll((Collection<? extends II>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID:
				setId((II)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE:
				setCode((CE)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE:
				setTitle((ST1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME:
				setEffectiveTime((TS1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE:
				setConfidentialityCode((CE)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE:
				setLanguageCode((CS1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID:
				setSetId((II)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER:
				setVersionNumber((INT1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME:
				setCopyTime((TS1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET:
				getRecordTarget().clear();
				getRecordTarget().addAll((Collection<? extends POCDMT000040RecordTarget>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR:
				getAuthor().clear();
				getAuthor().addAll((Collection<? extends POCDMT000040Author>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER:
				setDataEnterer((POCDMT000040DataEnterer)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT:
				getInformant().clear();
				getInformant().addAll((Collection<? extends POCDMT000040Informant12>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN:
				setCustodian((POCDMT000040Custodian)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT:
				getInformationRecipient().clear();
				getInformationRecipient().addAll((Collection<? extends POCDMT000040InformationRecipient>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR:
				setLegalAuthenticator((POCDMT000040LegalAuthenticator)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR:
				getAuthenticator().clear();
				getAuthenticator().addAll((Collection<? extends POCDMT000040Authenticator>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT:
				getParticipant().clear();
				getParticipant().addAll((Collection<? extends POCDMT000040Participant1>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF:
				getInFulfillmentOf().clear();
				getInFulfillmentOf().addAll((Collection<? extends POCDMT000040InFulfillmentOf>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF:
				getDocumentationOf().clear();
				getDocumentationOf().addAll((Collection<? extends POCDMT000040DocumentationOf>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT:
				getRelatedDocument().clear();
				getRelatedDocument().addAll((Collection<? extends POCDMT000040RelatedDocument>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION:
				getAuthorization().clear();
				getAuthorization().addAll((Collection<? extends POCDMT000040Authorization>)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF:
				setComponentOf((POCDMT000040Component1)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT:
				setComponent((POCDMT000040Component2)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE:
				setClassCode((ActClassClinicalDocument)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE:
				setMoodCode((Enumerator)newValue);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__NULL_FLAVOR:
				setNullFlavor((Enumerator)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE:
				getRealmCode().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID:
				setTypeId((POCDMT000040InfrastructureRootTypeId)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID:
				getTemplateId().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID:
				setId((II)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE:
				setCode((CE)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE:
				setTitle((ST1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME:
				setEffectiveTime((TS1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE:
				setConfidentialityCode((CE)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE:
				setLanguageCode((CS1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID:
				setSetId((II)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER:
				setVersionNumber((INT1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME:
				setCopyTime((TS1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET:
				getRecordTarget().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR:
				getAuthor().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER:
				setDataEnterer((POCDMT000040DataEnterer)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT:
				getInformant().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN:
				setCustodian((POCDMT000040Custodian)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT:
				getInformationRecipient().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR:
				setLegalAuthenticator((POCDMT000040LegalAuthenticator)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR:
				getAuthenticator().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT:
				getParticipant().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF:
				getInFulfillmentOf().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF:
				getDocumentationOf().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT:
				getRelatedDocument().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION:
				getAuthorization().clear();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF:
				setComponentOf((POCDMT000040Component1)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT:
				setComponent((POCDMT000040Component2)null);
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE:
				unsetClassCode();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE:
				unsetMoodCode();
				return;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__NULL_FLAVOR:
				setNullFlavor(NULL_FLAVOR_EDEFAULT);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__REALM_CODE:
				return realmCode != null && !realmCode.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TYPE_ID:
				return typeId != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TEMPLATE_ID:
				return templateId != null && !templateId.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__ID:
				return id != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CODE:
				return code != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__TITLE:
				return title != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__EFFECTIVE_TIME:
				return effectiveTime != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CONFIDENTIALITY_CODE:
				return confidentialityCode != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LANGUAGE_CODE:
				return languageCode != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__SET_ID:
				return setId != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__VERSION_NUMBER:
				return versionNumber != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COPY_TIME:
				return copyTime != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RECORD_TARGET:
				return recordTarget != null && !recordTarget.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHOR:
				return author != null && !author.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DATA_ENTERER:
				return dataEnterer != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMANT:
				return informant != null && !informant.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CUSTODIAN:
				return custodian != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__INFORMATION_RECIPIENT:
				return informationRecipient != null && !informationRecipient.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__LEGAL_AUTHENTICATOR:
				return legalAuthenticator != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHENTICATOR:
				return authenticator != null && !authenticator.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__PARTICIPANT:
				return participant != null && !participant.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__IN_FULFILLMENT_OF:
				return inFulfillmentOf != null && !inFulfillmentOf.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__DOCUMENTATION_OF:
				return documentationOf != null && !documentationOf.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__RELATED_DOCUMENT:
				return relatedDocument != null && !relatedDocument.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__AUTHORIZATION:
				return authorization != null && !authorization.isEmpty();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT_OF:
				return componentOf != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__COMPONENT:
				return component != null;
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__CLASS_CODE:
				return isSetClassCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__MOOD_CODE:
				return isSetMoodCode();
			case V3Package.POCDMT000040_CLINICAL_DOCUMENT__NULL_FLAVOR:
				return NULL_FLAVOR_EDEFAULT == null ? nullFlavor != null : !NULL_FLAVOR_EDEFAULT.equals(nullFlavor);
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (classCode: ");
		if (classCodeESet) result.append(classCode); else result.append("<unset>");
		result.append(", moodCode: ");
		if (moodCodeESet) result.append(moodCode); else result.append("<unset>");
		result.append(", nullFlavor: ");
		result.append(nullFlavor);
		result.append(')');
		return result.toString();
	}

} //POCDMT000040ClinicalDocumentImpl
